/* Q是一个队列，S是一个空栈，编写算法使得队列中元素逆置 */

#include <iostream>
#include "stackfun.h"
#include "queuefun.h"
using namespace std;

// 队列元素逆置
void reverse(stack &s, queue &q)
{
  // 将队列元素全部进栈
  while (q.front != q.rear)
    push(s, dequeue(q));
  
  // 将栈中元素全部添加进队列
  while (s.top != -1)
    enqueue(q, pop(s));
}

int main()
{
  // 创建栈
  stack s;
  
  // 初始化栈
  Init(s);
  
  // 创建队列
  queue q;
  
  // 初始化队列
  init(q);
  
  // 输入
  int x;
  cin >> x;
  
  // 不断接收输入，直到输入-1
  while (x != -1)
  {
    enqueue(q, x); // 进队
    cin >> x;
  }
  
  // 队列元素逆置
  reverse(s, q);
  
  // 打印队列元素
  while (q.front != q.rear)
  {
    cout << q.data[q.front] << " ";
    q.front = (q.front + 1) % maxsize;
  }
}
